/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipercube;

import com.ipercube.compiler.PivotCompiler;
import com.ipercube.MeasureEvaluator;
import com.ipercube.model.ColumnModel;
import com.ipercube.model.RowModel;
import com.ipercube.DataSourceModel;

/**
 *
 * @author tartur
 */
public interface Pivot {

    /**
     * Returns the measure for a given row and column
     * @param row
     * @param column
     * @return
     */
    public Measure getMeasureAt(Row row, Column column);

    public void compile();

    public DataSourceModel getDataModel();

    public void setDataModel(DataSourceModel dataModel);

    public ColumnModel getColumnModel();

    public RowModel getRowModel();

    public void setColumnModel(ColumnModel colModel);

    public void setRowModel(RowModel rowModel);

    public void setMeasureEvaluator(MeasureEvaluator evaluator);

    public MeasureEvaluator getMeasureEvaluator();

    public PivotCompiler getCompiler();

    public void setCompiler(PivotCompiler compiler);

    public DataMap getDataMap();

    public Row[] getRows();

    public Column[] getColumns();

}

